
// leetcode 106. 从中序与后序遍历序列构造二叉树
//class Solution {
//    public int i = 0;
//
//    public TreeNode buildTree(int[] inorder, int[] postorder) {
//        i = postorder.length - 1;
//        return buildTree(inorder, postorder, 0, inorder.length - 1);
//
//    }
//
//    public TreeNode buildTree(int[] inorder, int[] postorder, int start, int end) {
//        if (start > end) return null;
//        // 首先记录根
//        int rootVal = postorder[i];
//        TreeNode root = new TreeNode(rootVal);
//        // 找根下标
//        int rootIndex = findeRootIndex(inorder, start, end, rootVal);
//        i--;
//        if (rootIndex == -1) {
//            return null;
//        }
//        // 左右根，逆着来，根右左
//        root.right = buildTree(inorder, postorder, rootIndex + 1, end);
//        root.left = buildTree(inorder, postorder, start, rootIndex - 1);
//        return root;
//    }
//
//    public int findeRootIndex(int[] inorder, int start, int end, int key) {
//        for (int i = start; i <= end; i++) {
//            if (inorder[i] == key) {
//                return i;
//            }
//        }
//        return -1;
//    }
//}